import Vue from 'vue'
import Vuex from 'vuex'
import { deepClone } from "@/plugins/unit";
import comonView from '@/viewsConfig/common/index'
import UnitViewHandle from "@/plugins/UnitViewHandle";

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    // 页面的数据
    pages: {
      // 首页
      index: {
        ...deepClone(comonView.WbDiv),
        key: '000000',
        protect: true, // 受保护的组件 不会被删除和替换
      }
    },
    // 当前选择组件的属性
    currentView: null,
    // 当前页面
    currentPage: 'index',
  },
  getters: {
    // 当前页面的属性
    page({ pages, currentPage }) {
      return deepClone(pages[currentPage])
    }
  },
  mutations: {
    // 新增组件
    pushView({ pages, currentPage }, { key, data }) {
      let vw = new UnitViewHandle(pages[currentPage]);
      vw.add(key, data)
      pages[currentPage] = vw.$view
    },
    // 更新组件
    updateView({ pages, currentPage }, target) {
      const vw = new UnitViewHandle(pages[currentPage]);
      vw.set(target)
      pages[currentPage] = vw.$view
    },
    // 删除组件
    deleteView({ pages, currentPage }, key) {
      const vw = new UnitViewHandle(pages[currentPage]);
      vw.del(key)
      pages[currentPage] = vw.$view
    },

    // 设置当前的组件
    setCurrentView(state, val) {
      state.currentView = val
    }
  },
  actions: {
  },
  modules: {
  }
})
